﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using BaseDatos;
namespace Proceso
{
    public static class GestorProducto
    {
        public static Producto RegistrarNuevo(string NombreQuimico,Proveedor proveedor,string nombreComercial,string precioUnitarioVenta,string precioUnitarioCompra,string detalle)
        {
            try 
	        {
                if (proveedor == null)
                    throw new Exception("Debe seleccionar un proveedor para poder continuar");
                if (nombreComercial == "")
                    throw new Exception("Nombre comercial es un campo obligatorio");
                float resultpc;
                float resultpv;
                if (precioUnitarioVenta == "")
                    throw new Exception("Precio unitario de venta es un campo obligatorio");
                if (precioUnitarioCompra == "")
                    throw new Exception("Precio unitario de compra es un campo obligatorio");
                if (!float.TryParse(precioUnitarioCompra, out resultpc))
                    throw new Exception("Formato incorrecto de precio unitario");
                if (!float.TryParse(precioUnitarioVenta, out resultpv))
                    throw new Exception("Formato incorrecto de precio unitario de venta");
                if (resultpc>resultpv)
                    throw new Exception("Precio unitario de compra no puede ser mayor que el precio unitario de venta");
                Producto producto = new Producto(NombreQuimico,nombreComercial,resultpv,resultpc,proveedor,detalle);
                producto = BDProducto.RegistrarNuevo(producto);
                return producto;
	        }
	        catch (Exception ex)
	        {
		
		        throw ex;
	        }
        }
        public static List<Producto> buscarProductoPor(string nombreComercial)
        {
            try
            {
                if (nombreComercial == "")
                    throw new Exception("El campo nombre comercial es obligatorio para la búsqueda");
                List<Producto> productos  = BDProducto.buscarProductoPor(nombreComercial);
                if (productos == null)
                    throw new Exception("No se encontro ningún resultado con: "+ nombreComercial);

                return productos;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
        public static List<Producto> obtenerTodaLaListaDeProductos()
        {
            try
            {
                return BDProducto.obtenerTodosLosProductos();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally { 
                
            }
        }
        public static void actualizarProducto(long idProducto,string nq, long idProveedor,string nc,string precioUC,string detalle,string precioUV)
        {
            try 
            {
                if (nq == "")
                    throw new Exception("Nombre comercial es un campo obligatorio");
                float resultpc;
                float resultpv;
                if (precioUV == "")
                    throw new Exception("Precio unitario de venta es un campo obligatorio");
                if (precioUC == "")
                    throw new Exception("Precio unitario de compra es un campo obligatorio");
                if (!float.TryParse(precioUC, out resultpc))
                    throw new Exception("Formato incorrecto de precio unitario");
                if (!float.TryParse(precioUV, out resultpv))
                    throw new Exception("Formato incorrecto de precio unitario de venta");
                if (resultpc > resultpv)
                    throw new Exception("Precio unitario de compra no puede ser mayor que el precio unitario de venta");
                Producto p = new Producto();
                p.idProducto = idProducto;
                p.Detalle = detalle;
                p.precioUnitarioCompra = resultpc;
                p.precioUnitarioVenta = resultpv;
                p.proveedor.idProveedor = idProveedor;
                p.nombreComercial = nc;
                p.nombreQuimico = nq;
                BDProducto.ActualizarProducto(p);
            }
            catch (Exception e)
            {

                throw e;
            }   
        }
    }
}
